# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Compute.V1.Model.AutoscalingPolicyScaleInControl do
  @moduledoc """
  Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.

  ## Attributes

  *   `maxScaledInReplicas` (*type:* `GoogleApi.Compute.V1.Model.FixedOrPercent.t`, *default:* `nil`) - Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step.
  *   `timeWindowSec` (*type:* `integer()`, *default:* `nil`) - How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :maxScaledInReplicas => GoogleApi.Compute.V1.Model.FixedOrPercent.t() | nil,
          :timeWindowSec => integer() | nil
        }

  field(:maxScaledInReplicas, as: GoogleApi.Compute.V1.Model.FixedOrPercent)
  field(:timeWindowSec)
end

defimpl Poison.Decoder, for: GoogleApi.Compute.V1.Model.AutoscalingPolicyScaleInControl do
  def decode(value, options) do
    GoogleApi.Compute.V1.Model.AutoscalingPolicyScaleInControl.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Compute.V1.Model.AutoscalingPolicyScaleInControl do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
